# Linear Regression Using Gradient Descent 
import numpy as np
def linear_regression_gradient_descent(X: np.ndarray, y: np.ndarray, alpha: float, iterations: int) -> np.ndarray:
	m, n = X.shape
	theta = np.zeros((n, 1))
	yT = y.reshape(-1, 1)
	for i in range(iterations):
		predictions = X @ theta
		errors = predictions - yT
		updates = X.T @ errors / m
		theta -= alpha * updates
	theta = np.round(theta, 4).flatten()
	return theta
